home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok52 / oberonced / obcedcall.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  80 lines

  1. (******************************************************************************
  2.  
  3.     :Program.    ObCEDCall.mod
  4.     :Contents.   Communication with CED
  5.     :Author.     Achim Siebert
  6.     :Address.    Nobileweg 67 , 7000 Stuttgart 40
  7.     :Copyright.  Public Domain
  8.     :Language.   Oberon
  9.     :Translator. AmigaOberon A+L
  10.     :Imports.    CED
  11.     :History.    Dec-1990; V1.2
  12.     :Usage.      ObCEDCall [c][l][e][opt] | [next] | [prev] | [first] | [quit]
  13.  
  14. *******************************************************************************)
  15.  
  16. MODULE ObCEDCall;
  17.  
  18. IMPORT
  19.        ExecSupport,
  20.        Arguments,
  21.        Strings,
  22.        SYSTEM,
  23.        Dos,
  24.        CED,
  25.        Exec;
  26.  
  27. VAR
  28.     msp, replmsp : Exec.MsgPortPtr;
  29.     msgstring : ARRAY 8 OF CHAR;
  30.     msgstringPtr : POINTER TO ARRAY 8 OF CHAR;
  31.     mymess : CED.CEDMsg;
  32.  
  33. CONST myportname = "OB_CED";
  34.  
  35. PROCEDURE GetArgs():BOOLEAN;
  36.  
  37. VAR i: INTEGER;
  38.  
  39. BEGIN
  40.  
  41.    i := Arguments.NumArgs();
  42.    IF i = 1 THEN
  43.       Arguments.GetArg(1,msgstring);
  44.       Strings.Upper(msgstring);
  45.       RETURN TRUE;
  46.    END;
  47.    RETURN FALSE;
  48.  
  49. END GetArgs;
  50.  
  51. BEGIN
  52.  
  53.    msp := Exec.FindPort(myportname);
  54.    LOOP
  55.       IF msp#NIL THEN
  56.          replmsp := ExecSupport.CreatePort("",0);
  57.          IF replmsp = NIL THEN HALT(20) END;
  58.          mymess.cmNode.node.type:=Exec.message;
  59.          mymess.cmNode.length:=CED.CEDMsgSize;
  60.          mymess.cmNode.replyPort:=replmsp;
  61.          IF NOT GetArgs() THEN EXIT;END;
  62.          NEW(msgstringPtr);
  63.          IF msgstringPtr = NIL THEN HALT(20) END;
  64.          mymess.args[0] := msgstringPtr;
  65.          COPY(msgstring,msgstringPtr^);
  66.          Exec.PutMsg(msp,SYSTEM.ADR(mymess));
  67.          Exec.WaitPort(replmsp);
  68.          ExecSupport.DeletePort(replmsp);
  69.          EXIT;
  70.       ELSE IF Dos.Execute("Run >NIL: ObCED",NIL,NIL) THEN
  71.               Dos.Delay(100);
  72.               msp := Exec.FindPort(myportname);
  73.               IF msp = NIL THEN EXIT END;
  74.            ELSE EXIT;
  75.            END;
  76.       END;
  77.     END;
  78.  
  79. END ObCEDCall.
  80.